package com.bd.scm.module.department.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.bd.scm.domain.dto.TreeNode;
import com.bd.scm.domain.dto.department.DeptAgGridTree;
import com.bd.scm.domain.dto.login.LoginDto;
import com.bd.scm.domain.dto.tree.ZTree;
import com.bd.scm.domain.models.department.DtDep;

import java.util.List;

/**
 * 部门服务类
 *
 * @author yufc
 * @since 2019-08-27
 */
public interface IDtDepService extends IService<DtDep> {

    /**
     * 获取所有部门数据
     *
     * @return
     */
    List<DtDep> getDeptList(String queryMap);

    /**
     * 获取部门树结构数据（只有key、title、children）
     *
     * @return
     */
    List<TreeNode> getDeptTreeList(Long parentId);

    /**
     * 获取部门树结构数据（包含部门表所有字段）
     *
     * @param parentId
     * @return
     */
    List<DtDep> getDeptTreeListWithData(Long parentId);

    /**
     * 修改部门信息
     *
     * @param dept 部门对象
     * @return 返回影响行数，0表示更新失败
     */
    int edit(DtDep dept);

    /**
     * 新增部门
     *
     * @param dept 部门对象
     * @return 返回影响行数，0表示更新失败
     */
    int add(DtDep dept);

    /**
     * 删除部门
     *
     * @param dept 部门对象
     * @return 返回影响行数，0表示更新失败
     */
    String delete(DtDep dept);
//    int delete(DtDep dept);

    /**
     * 获取当前父节点下最大编号的记录
     *
     * @param parentId 父级部门Id
     * @return
     */
    DtDep selectMaxNoByParent(int parentId);

    /**
     * 获取与搜索关键字相匹配的部门
     *
     * @param key
     * @return
     */
    List<String> searchTreeKeyList(String key);

    /**
     * 获取岗位数据
     *
     * @param parentId 父结点ID
     * @return
     */
    List<ZTree> getJobList(String parentId);

    /**
     * 获取zTree树结构数据
     *
     * @param parentId 父结点ID
     * @return
     */
    List<ZTree> getZTreeList(Long parentId, List<String> deptIdList);

    /**
     * 获取2级部门数据  班次与部门使用
     *
     * @param parentId 父结点ID
     * @return
     */
    List<ZTree> findDepList(Long parentId, List<String> deptIdList);

    /**
     * 获取2级部门数据  规律班次与部门使用
     *
     * @param parentId 父结点ID
     * @return
     */
    List<ZTree> findGlDepList(Long parentId, List<String> deptIdList);


    /**
     * 登录名对应的部门编号and 位数
     *
     * @param glyNo 登录名
     * @return
     */
    public List<LoginDto> findDept(LoginDto loginDto);

    /**
     * 登录名对应的部门id
     *
     * @param queryMap
     * @return
     */
    public List<String> findDeptid(LoginDto loginDto);

    /**
     * 部门id
     *
     * @param queryMap
     * @return
     */
    public List<String> findSoleDeptid(LoginDto loginDto);

    /**
     * ag-grid treegrid数据源
     *
     * @return
     */
    List<DeptAgGridTree> getAgTreeGridList(String depName);

    /**
     * 删除部门
     *
     * @param dept 部门对象
     * @return 返回影响行数，0表示更新失败
     */
    String deleteDtDep(DtDep dept);

    /**
     * 修改部门
     *
     * @param dept 部门对象
     * @return 返回影响行数，0表示更新失败
     */
    String updateDtDep(DtDep dept);

    /**
     * 根据部门名称，编号模糊查询部门
     *
     * @param serchValue
     * @return
     */
    List<DtDep> findDtDepList(String serchValue);

}
